import request from "@/utils/request";

const AuthAPI = {
  /** 密码登录接口*/
  login(data: LoginFormData) {
    return request<any, LoginResult | ShopInfo[]>({
      url: `/appAuth/login`,
      method: "post",
      data: data,
    });
  },
  /** 手机登录接口*/
  loginByMobile(data: LoginFormData) {
    return request<any, LoginResult | ShopInfo[]>({
      url: `/appAuth/loginByMobile`,
      method: "post",
      data: data,
    });
  },
  /**
   * 获取当前登录用户信息
   *
   * @returns 登录用户昵称、头像信息，包括角色和权限
   */
  getInfo() {
    return request<any, UserInfo>({
      url: `/auth/me`,
      method: "get",
    });
  },
  /** 注销登录接口 */
  logout() {
    return request({
      url: `/auth/logout`,
      method: "post",
    });
  },
  /**
   * 获取验证码接口
   * @param data - 登录表单数据
   */
  getMobileCode(data: LoginFormData) {
    return request({
      url: `/appAuth/sendCode`,
      method: "post",
      data: data,
    });
  },
  /** 获取验证码接口*/
  getCaptcha() {
    return request<any, CaptchaInfo>({
      url: `/auth/captcha`,
      method: "get",
    });
  },
  /** 获取登录页图片*/
  loginPageConfig() {
    return request<any, loginPageConfigResult>({
      url: `/auth/loginPageConfig`,
      method: "get",
    });
  },
};

export default AuthAPI;
// 类型判断函数
export function isLoginResult(res: any): res is LoginResult {
  return res && ("token" in res || "expires_in" in res);
}
export function isShopList(res: any): res is ShopInfo[] {
  return Array.isArray(res) && res.every((item) => "companyId" in item);
}

/** 验证码信息 */
export interface CaptchaInfo {
  /** 验证码缓存key */
  key: string;
  /** 验证码图片Base64字符串 */
  img: string;
}
/** 登录页返回信息 */
export interface loginPageConfigResult {
  /** 登录页图片 */
  image: string;
}
/** 登录表单数据 */
export interface LoginFormData {
  /** 用户名 */
  username: string;
  /** 密码 */
  password: string;
  /** 验证码 */
  captcha: string;
  /** 验证码key */
  captchaKey: string;
  /** 手机验证码 */
  code: string;
  /** 手机号 */
  mobile: string;
}

/** 登录响应 */
export interface LoginResult {
  /** 访问令牌 */
  token: string;
  /** 过期时间 */
  expires_in: string;
}
/** 店铺信息 */
export interface ShopInfo {
  /** 用户头像 */
  avatar: string;
  /** 平台id */
  companyId: string;
  /** 平台名称 */
  companyName: string;
  /** 交付状态 0 待交付，1 交付中，2 交付完成 */
  deliverStatus: number;
  /** 过期时间 */
  expireTime: string;
  /** 是否创建者 1 创建者 0 子账号 */
  isMaster: number;
  /** 讲师名称 */
  lecturerPhone: string;
  /** 登录角色 */
  roleType: number;
  /** 版本 */
  version: number;
}

/** 检查是否迁移响应 */
export interface checkMoveResult {
  /** 员工名称 */
  employeeName: string;
  /** 是否迁移 */
  isMoveOver: number;
}

/** 登录用户信息 */
export interface UserInfo {
  /** 登录身份1-服务主管 2-财务主管 */
  adminIdentity: number;
  /** 登录名称 */
  adminName: "总部管理员";
  /** 权限 */
  adminPermission: string[];
  /** 头像 */
  avatar: string;
  /** 登录用户id */
  id: number;
  /** 登录用户手机号 */
  mobile: string;
  /** 登录用户姓名 */
  name: string;
  /** 登录用户角色 */
  roles: string[];
}
/** 角色信息 */
export interface RolesInfo {
  created_at: string;
  guard_name: string;
  id: number;
  name: number;
  permissions: string[];
  pivot: PivotInfo;
  updated_at: string;
}

export interface PivotInfo {
  model_id: number;
  role_id: number;
}
